package py.edu.ucom.cadira.logic;

import py.edu.ucom.cadira.net.User;
import py.edu.ucom.cadira.net.serializables.JoinRequest;
import py.edu.ucom.cadira.net.serializables.JoinResponse;
import py.edu.ucom.cadira.net.serializables.ListTableResponse;
import py.edu.ucom.cadira.net.serializables.LoginRequest;
import py.edu.ucom.cadira.net.serializables.LoginResponse;

public class TestServer {

	
	private static void testLogin(Servidor servidor,String nombre,String pase){
		LoginRequest login=new LoginRequest(nombre,pase);
		LoginResponse loginResponse = servidor.login(login);
				
		System.out.println("After Login:");
		User usuario=loginResponse.getUsuario();
		System.out.println("User "+usuario.getUsername()+"\n");
		servidor.setUsuarios(usuario);
	}
	private static void createTable(Servidor s){
		Mesa mesa=new Mesa();	
		s.setMesas(mesa);
	}
	private static void testListTables(Servidor s){
		//StandarRequest listTrequest=new StandarRequest();
						
		ListTableResponse listTresponse=new ListTableResponse();
		listTresponse.setMesas(s.getMesas());
		
		for(int i=0;i<s.getMesas().size();i++) {
			int j=i+1;
			int jug=0;
			int watchers=0;
			System.out.println("  TABLE "+j);
			if(s.getMesas().get(i).getPlayer1()!=null) {
				jug++;
			}
			if(s.getMesas().get(i).getPlayer2()!=null) {
				jug++;
			}
			System.out.println(jug+" Player(s)");
			System.out.println(watchers+" Watcher(s)");
			if(s.getMesas().get(i).isStatus()==true) {
				System.out.println("MESA LISTA para jugar.\n");
			}
		}
		System.out.println("\n");
	}
	private static void testJoinTable(Servidor s,int userId,int tableId){
		JoinRequest jrequest=new JoinRequest(tableId);
		
		JoinResponse jresponse=new JoinResponse();
		jresponse.setMesa(s.getMesas().get(tableId));
		//jresponse.setUsuario(jrequest.getUsuario());
	
		s.join(jrequest, s.getUsuarios().get(userId));
	}
	
	public static void testStarGame(Servidor s,int tableId,int userId) {
		//StartGameRequest startgamerequest=new StartGameRequest();
	
		//StartGameResponse startgameresponse=s.startGame(startgamerequest,s.getUsuarios().get(userId));
		System.out.println("Start Game Table "+s.getMesas().get(0).getMesaId()+1+"\n");
	}
	
	public static void main(String[] args) {
		
		Servidor s=new Servidor();
		testLogin(s,"Douglas","123");//Jugador1
		testLogin(s,"Juan","987");//Jugador2
		testLogin(s,"Pedro","456");//Jugador3
		createTable(s);//Mesa1
		createTable(s);//Mesa2
		testListTables(s);//Lista de mesas
		testJoinTable(s,0,0);//Jugador1 se une a mesa1
		testListTables(s);
		testJoinTable(s,1,0);//Jugador2 se une a mesa1
		testListTables(s);
		testJoinTable(s,2,1);//Jugador3 se une a mesa2
		testStarGame(s,0,1);//Comienza el juego en la mesa1
		testListTables(s);
	}
}
